<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    </style>
</head>

<body>
    <!-- 第一步，引入react核心库，先有核心库，才能有ReactDOM库 -->
    <script src="../js/react.development.js"></script>
    <!-- 第二步，引入react-dom库，用于操作DOM，这样就有ReactDOM对象，可打印 -->
    <script src="../js/react-dom.development.js"></script>
    <!-- 第三步，引入babel库，用于翻译jsx语法 -->
    <script src="../js/babel.min.js"></script>

    <!-- 第四步，创建一个容器 -->
    <div id="box"></div>

    <script type="text/babel"> /* 指定脚本的类型为babel编译 */
        /*
            React组件分为函数式组件和类式组件
                函数式组件简单
                类式组件复杂
        */

        // 1. 创建函数式组件
        function Demo() {
            // 这里的this是undefined，因为babel翻译后，开启了严格模式，不允许this执行window
            console.log('this指向',this);
            return <h2>我是用函数定义的组件，函数式组件，用于简单组件</h2>
        }

        // 2. 渲染函数组件到页面上
        // ReactDOM.render(demo(), document.querySelector('#box')) // 函数执行方式React工具就看不到了
        ReactDOM.render(<Demo></Demo>, document.querySelector('#box')) // 组件方式，React工具能看到

        /*
            执行了ReactDOM.render(<Demo/>,...) 发生了什么？
                1. React解析组件标签，找到了MyComponent组件
                2. 发现组件是使用函数定义的，随后调用该函数，将返回的虚拟DOM转化为真实的DOM，随后呈现在页面上
        */ 

    </script>


</body>

</html>